package top.lyjwn.todo.weinxin.data.mch.param;

import top.lyjwn.todo.common.utils.XMLUtil;

/**
 * 查询退款
 * 
 * @author luoyujie
 *
 */
public class QueryRefund implements XmlFormat {

	/**
	 * 必填
	 * 
	 * 公众账号ID
	 * 
	 * 微信支付分配的公众账号ID（企业号corpid即为此appId）
	 */
	private String appid;
	/**
	 * 必填
	 * 
	 * 商户号
	 * 
	 * 微信支付分配的商户号
	 */
	private String mch_id;
	/**
	 * 必填
	 *
	 * 随机字符串
	 * 
	 * 随机字符串，不长于32位。推荐随机数生成算法
	 */
	private String nonce_str;
	/**
	 * 必填
	 * 
	 * 签名
	 * 
	 * 签名，详见签名生成算法
	 */
	private String sign;

	/**
	 * 非必填
	 * 
	 * 签名类型
	 * 
	 * 签名类型，目前支持HMAC-SHA256和MD5，默认为MD5
	 */
	private String sign_type;
	/**
	 * 四选一
	 * 
	 * 微信订单号
	 * 
	 * 微信订单号查询的优先级是： refund_id > out_refund_no > transaction_id > out_trade_no
	 */
	private String transaction_id;
	/**
	 * 四选一
	 * 
	 * 商户订单号
	 * 
	 * 商户系统内部订单号，要求32个字符内，只能是数字、大小写字母_-|*@ ，且在同一个商户号下唯一。
	 */
	private String out_trade_no;
	/**
	 * 四选一
	 * 
	 * 商户退款单号
	 * 
	 * 商户系统内部的退款单号，商户系统内部唯一，只能是数字、大小写字母_-|*@ ，同一退款单号多次请求只退一笔。
	 */
	private String out_refund_no;

	/**
	 * 四选一
	 * 
	 * 微信退款单号
	 * 
	 * 微信生成的退款单号，在申请退款接口有返回
	 */
	private String refund_id;

	/**
	 * 非必填
	 * 
	 * 偏移量
	 * 
	 * 偏移量，当部分退款次数超过10次时可使用，表示返回的查询结果从这个偏移量开始取记录
	 */
	private String offset;

	public QueryRefund(String appid,String mch_id,String nonce_str) {
		this.appid =appid;
		this.mch_id =mch_id;
		this.nonce_str = nonce_str;
	}

	public QueryRefund(String appid,String mch_id,String out_refund_no, String nonce_str) {
		this.appid =appid;
		this.mch_id =mch_id;
		this.out_refund_no = out_refund_no;
		this.nonce_str = nonce_str;
	}

	public QueryRefund() {
	}

	public void setSign(String sign) {
		this.sign = sign;
	}

	public void setSign_type(String sign_type) {
		this.sign_type = sign_type;
	}

	public void setTransaction_id(String transaction_id) {
		this.transaction_id = transaction_id;
	}

	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}

	public void setOut_refund_no(String out_refund_no) {
		this.out_refund_no = out_refund_no;
	}

	public void setRefund_id(String refund_id) {
		this.refund_id = refund_id;
	}

	public void setOffset(String offset) {
		this.offset = offset;
	}

	public String getAppid() {
		return appid;
	}

	public String getMch_id() {
		return mch_id;
	}

	public String getNonce_str() {
		return nonce_str;
	}

	public String getSign() {
		return sign;
	}

	public String getSign_type() {
		return sign_type;
	}

	public String getTransaction_id() {
		return transaction_id;
	}

	public String getOut_trade_no() {
		return out_trade_no;
	}

	public String getOut_refund_no() {
		return out_refund_no;
	}

	public String getRefund_id() {
		return refund_id;
	}

	public String getOffset() {
		return offset;
	}

	@Override
	public String toXml() {
		return XMLUtil.convertToXml(this);
	}

}
